package app

import (
	"fmt"
	"os"
	"win-tools/globals"

	"gitee.com/MM-Q/fastlog"
	"github.com/jmoiron/sqlx"
	_ "github.com/mattn/go-sqlite3"
)

// initDb 初始化数据库
func initDb() (*sqlx.DB, error) {
	// 检查数据库目录是否存在
	if _, dbDirErr := checkPath(globals.DbDir); dbDirErr != nil {
		if mkdirErr := os.MkdirAll(globals.DbDir, os.ModePerm); mkdirErr != nil {
			return nil, fmt.Errorf("创建数据库目录失败: %s", mkdirErr)
		}
	}

	// 检查数据库文件是否存在
	_, dbFileErr := checkPath(globals.DbFilePath)
	if dbFileErr != nil {
		// 则连接到数据库
		db, err := sqlx.Connect("sqlite3", globals.DbFilePath)
		if err != nil {
			return nil, fmt.Errorf("连接数据库失败: %s", err)
		}
		// 执行初始化 SQL 语句
		_, err = db.Exec(globals.InitSql)
		if err != nil {
			return nil, fmt.Errorf("执行初始化 SQL 语句失败: %s", err)
		}

		return db, nil
	}

	// 如果数据库文件存在，则直接连接到数据库
	db, err := sqlx.Connect("sqlite3", globals.DbFilePath)
	if err != nil {
		return nil, fmt.Errorf("连接数据库失败: %s", err)
	}
	return db, nil
}

// initLog 初始化日志
func initLog() (*fastlog.FastLog, error) {
	// 检查日志目录是否存在
	if _, logDirErr := checkPath(globals.LogDir); logDirErr != nil {
		if mkdirErr := os.MkdirAll(globals.LogDir, os.ModePerm); mkdirErr != nil {
			return nil, fmt.Errorf("创建日志目录失败: %s", mkdirErr)
		}
	}

	// 创建fastConfig
	cfg := fastlog.NewFastLogConfig(globals.LogDir, globals.LogFileName)

	// 创建FastLog
	flog, err := fastlog.NewFastLog(cfg)
	if err != nil {
		return nil, fmt.Errorf("创建FastLog失败: %s", err)
	}

	return flog, nil
}
